OpenCart 內建的會員群組功能,允許您自訂多個會員群組(或等級),並且可以針對不同的會員群組,設定不同的商品特價、量大折扣、紅利點數等等,不過系統並沒有內建自動變更或升降會員群組的功能,如果您需要系統能依據會員的累計消費金額,來變動會員群組的話,就必須安裝擴充模組。
在 OpenCart 的 Extension Store 中,有好幾套模組能提供會員自動升級的功能,本文要來分享一下我們使用 Customer Group Auto Switcher 模組的經驗。
這一套會員自動升級模組,是自從 OpenCart 1.5.x 的年代就開始發展的,所以目前替換代碼的部分,仍是以 vqmod 所設計的,不過由於模組沒有完全滿足我們的需求,所以後來我們自行用 OCMOD 改寫過了,如果你不喜歡系統多掛一套 vqmod,那建議考慮其他廠商開發的模組,例如 : https://www.opencart.com/index.php?route=marketplace/extension/info&extension_id=25207
這套 Customer Group Auto Switcher,它的設定介面是直接修改了系統的會員群組管理功能,會員群組管理清單,多了每個會員群組的升級規則說明。
進入到會員群組的編輯畫面,可以看到擴增了一些升(降)級相關的欄位設定,例如升級後的下一個等級、訂單累計金額門檻、訂單累計期、訂單累計的訂單狀態、還有啟用降級功能等等。
模組能依照規則運作穩定,畢竟已經維護7、8年,但在使用上我們遇到了幾個不滿足的地方。
第一點
這套模組設計成在會員結帳、會員登入、會員進到我的帳號時,都會進行會員等級變動的檢查,觸發時機沒問題,即使現有會員已有達升級資格者,也會在模組安裝後,再次登入時觸發升級。
但是我們卻發現,這套模組被設計成每次變動只跳一級,即使明明會員應該有資格連跳2級,也只會在第一次觸發升級時升等一級,必須再次被觸發,才會升到應有的等級,沒有辦法一次升到位,分析過模組成程式,的確如此設計,應該是沒有考慮到一次跳升2級的需求,如果您不介意,例如您的網站只分2個會員等級,這問題就可以忽略。
第二點
會員累計消費金額的日期區間,是抓訂單的產生日期計算的,例如設定 180 天的累計區間,就會找訂單產生日期是落在往前 180 天之內的訂單,當然還會搭配指定的訂單狀態。
不過,OpenCart 訂單產生日期,並不一定是紀錄著結帳的時間,例如當你安裝了一頁式結帳,在會員初次進入到結帳畫面時,系統就會建立一筆臨時的訂單,並使用會員編號或 Session ID 來關聯,所以當某個會員或訪客,在系統中已經存在臨時訂單的紀錄,則在該會員完成結帳之前,都會使用該筆紀錄作為訂單資料,包含訂單編號及產生日期,即使會員是在建立了臨時訂單後的一個月才真正結帳,該筆訂單仍會是使用一個月前所建立的訂單編號及產生日期。
於是,以訂單的產生日期來做為區間的判別欄位,可能會失真,一張在 181 天前建立臨時訂單,在 3 天之後完成結帳的正式訂單,有可能因此不會被納入累計金額,因為它被視為 181 天前的訂單。如果您的系統沒有使用一頁式結帳,或您的一頁式結帳模組沒有這種情形,那就可以忽略這個問題。
以上 2 點,我們都以自行改寫模組完成修正,若您正準備導入依會員累計消費自動升等的功能,請注意我們提到的問題,希望以上的分享,對您有所幫助。
參考資源
電商系統工程筆記 https://24cc.com/
台灣電商 FB 社團 https://www.facebook.com/groups/opencart.taiwan/
OpenCart 網站代管、客製、維護 https://www.osec.tw/
OpenCart 台灣電商技術支援粉絲頁 https://www.facebook.com/ntcart/
OpenCart 台灣優化版專頁 https://www.osec.tw/opencart.html